#http://www.vitutor.com/ecuaciones/1/ecua4_Contenidos.html


import math
import unittest

class Valores():
	def __init__(self, a, b, c):
		self.a = a
		self.b = b
		self.c = c
		
class Ecuaciones(Valores):
	def __init__(self,a,b,c):
		Valores.__init__(self,a,b,c)
		self.ecuacPrimeraParte = None
		self.X1 = None
		self.X2 = None
	
	def setEcuacPrimeraParte (self):
		self.ecuacPrimeraParte = self.b*self.b - 4*self.a*self.c
	def getEcuacPrimeraParte (self):
		return self.ecuacPrimeraParte	
	
	def setX1(self,a,b):
		try:
			self.X1 = (b+(math.sqrt(self.ecuacPrimeraParte)))/(2*a)
		except ValueError:
			print "la ecuacion no tiene soluciones reales"
		
	def getX1(self):
		return self.X1
	
	def setX2(self,a,b):
		try:
			self.X2 = (-b+(math.sqrt(self.ecuacPrimeraParte)))/(2*a)
		except ValueError:
			print "la ecuacion no tiene soluciones reales"
	def getX2(self):
		return self.X2
		
class Main:
	
	def inicio(self):
		a=input("ingresa coeficiente cuadratico ")  
		b=input("ingresa coeficiente lineal ")
		c=input("ingresa constante ")
		
		self.realizarEcuaciones (a,b,c)

	def realizarEcuaciones(self,a,b,c):	
		if a!=0:
			
			ecuacion = Ecuaciones(a, b, c)		
			ecuac = ecuacion.setEcuacPrimeraParte()
			ecuacion.setX1(a,b)
			ecuacion.setX2(a,b)
			self.imprimirRaices(ecuacion)
		else:
			print "coeficiente cuadratico debe ser distinto de 0"
	
	def imprimirRaices(self,ecuacion):
		print "x1 = "+str(ecuacion.getX1())
		print "x2 = "+str(ecuacion.getX2())


ecuacion = Ecuaciones(1,5,6)
ecuacion.setEcuacPrimeraParte()

def esEcuacionPrimeraParte(numero):
	if numero == ecuacion.getEcuacPrimeraParte():
		return True
def esRaiz():
	return math.sqrt(ecuacion.getEcuacPrimeraParte())
		
def esX1(a,b):
	return (b+(math.sqrt(ecuacion.getEcuacPrimeraParte())))/(2*a)

def esX2(a,b):
	return (-b+(math.sqrt(ecuacion.getEcuacPrimeraParte())))/(2*a)	
		

class CuadraticaTest(unittest.TestCase):
	def testPrimeraEcuac(self):
		self.assertTrue(esEcuacionPrimeraParte(1), True) 
	
	def testRaizCuadrada(self):
		self.assertEqual(esRaiz(), 1)
		
	def testX2(self):
		self.assertEqual(esX2(1,5) , -2.0)
	
	def testX1(self):
		self.assertEqual(esX1(1,5) , 3.0)	
		
		
if __name__=="__main__":
	unittest.main()
	main = Main()
	main.inicio()
	
